package labox.innovation.gameserver.network.clientpackets;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import labox.innovation.config.Config;
import labox.innovation.gameserver.handler.ChatHandler;
import labox.innovation.gameserver.handler.IChatHandler;
import labox.innovation.gameserver.model.FuzeWorld;
import labox.innovation.gameserver.model.actor.instance.FuzePcInstance;

/**
 * 接受客户端聊天消息请求<br>
 * 根据聊天请求类别转发消息到指定目标。<br>
 * 聊天类别有：<blockquote>
 * 
 * <pre>
 * 密聊频道 &lt; br &gt; 场景频道 &lt; br &gt; 队伍频道 &lt; br &gt; 帮会频道 &lt; br &gt; 种族频道 &lt; br &gt; 世界频道 &lt; br &gt; 系统频道 &lt; br &gt; 公告频道 &lt; br &gt; 群落频道
 * </pre>
 * 
 * </blockquote>
 * 
 * @author frank
 * 
 */
public final class ChatPacket extends L2GameClientPacket {
	private static Logger _log = LoggerFactory.getLogger(ChatPacket.class.getName());

	//	/**私聊频道 */
	//	private static final byte SECRET_CHANNAL = 0x00;
	//	/**场景频道*/
	//	private static final byte SCENE_CHANNAL = 0x01;
	//	/**队伍频道*/
	//	private static final byte PART_CHANNAL = 0x02;
	//	/**帮会频道*/
	//	private static final byte CLAN_CHANNAL = 0x03;
	//	/**种族频道*/
	//	private static final byte RACE_CHANNAL = 0x04;
	//	/**世界频道*/
	//	private static final byte WORLD_CHANNAL = 0x05;
	//	/**系统频道*/
	//	private static final byte SYSTEM_CHANNAL = 0x06;
	//	/**公告频道*/
	//	private static final byte NOTICE_CHANNAL = 0x07;
	//	/**群落频道*/
	//	private static final byte COMMUNITY_CHANNAL = 0x08;

	/**
	 * 发送聊天内容方法
	 * 
	 * @param type
	 *            //-- 聊天类型
	 * @param activeChar
	 *            //-- 当前玩家角色
	 * @param target
	 *            //-- 聊天目标
	 * @param text
	 *            //-- 聊天内容
	 */
	private void sendMessage(byte type, FuzePcInstance activeChar, long target, String text) {
		IChatHandler chatHandler = ChatHandler.getInstance().getChatHandler(type);

		if (chatHandler != null) { //-- 找到相关聊天处理器则调用处理方法，否则提示找不到处理器
			FuzePcInstance receiver = FuzeWorld.getInstance().getPlayer(target);
			chatHandler.handleChat(type, activeChar, receiver, text); //-- 这个地方的目标类型以后需要改为long型。
		} else {
			_log.info("can not find any chat handler to process this opereation!", Config.SERVER_ID);
		}
	}

	@Override
	public String getType() {
		return null;
	}

	@Override
	protected void readImpl() {
		byte type = readByte(); //-- 聊天类别
		long target = readLong(); //-- 聊天目标
		String text = readString(); //-- 聊天内容
		sendMessage(type, getClient().getActiveChar(), target, text); //-- 转发聊天内容
	}

	@Override
	protected void runImpl() {

	}
}
